<?php 

// 列表页控制器
class ListController extends CommonController{
      // public  $goods=K('Goods');
  // 列表商品显示
   public function index(){
      $cid=Q('get.cid',0,'intval');
        // 调用获取所属子集分类
    // $cids=$this->getCate($cid);
       $cids=empty($_GET['cid'])  ? 0 : $this->getCate($cid);
      $word=empty($_GET['keywords'])  ? 0 : $_GET['keywords'];
      $sort= empty($_GET['sort'])  ? 0 : $_GET['sort'];

      
      // 调用面包屑
     $this->crumb($cid);
     // 热卖推荐
    $hot=K('Goods')->where("is_hot=1 and cat_id in(".$cids.") ")->limit('0,3')->all();
   $this->assign('hot',$hot);
    // 一周排行榜
   $top=K('Goods')->where("click>10 and cat_id in(".$cids.") ")->order('add_time desc')->limit('0,4')->all();
    $this->assign('top',$top);
   
     
  
  // 商品筛选
  //获得子分类下的所有商品id
  $gids = K('Goods')->where("cat_id in(" .$cids.")")->getField('goods_id',true);
// 如果分类下面有商品的时候
if($gids){
  // 通过gid得到商品属性
  $attr=K('GoodsAttr')->where("gid in(".implode(',',$gids).")")->group('attr_value')->all();
  //以下两个临时数组为重组列表页需要的属性
  $tempAttr=array();
  foreach($attr as $v){
    $tempAttr[$v['attr_id']][]=$v;
  }

$tempFinalAttr=array();
foreach($tempAttr as $attr_id=>$value){
   $tempFinalAttr[]=array(
    'name'=>K('Attribute')->where("attr_id=" . $attr_id)->getField('attr_name'),
    'value'=>$value

    );

}

$this->assign('tempFinalAttr',$tempFinalAttr);
// 统计数字
$num=count($tempFinalAttr);
// p($tempFinalAttr);die;
$param=isset($_GET['param']) ? explode('_',$_GET['param']):array_fill(0,$num,0);
$this->assign('param',$param);
// 进行筛选
foreach($param as $v){
  if($v){
    $filterGids[]=M()->join('__goods_attr__ g1 JOIN __goods_attr__ g2 ON g1.attr_value=g2.attr_value')->where("g1.goods_att_id={$v}")->getField('g2.gid',true);
  }

}

// 如果有筛选的gid
if(isset($filterGids)){
 // 取交集
  $finalGids = $filterGids[0];
  $finalGids=array_intersect($finalGids,$gids);
}else{
  // 全部不限的时候，就是当前分类下的所有商品id
  $finalGids=$gids;
}


}else{
 // 如果分类下面没有商品的时候
  $finalGids=array();

}

// p($finalGids);
//销量、价格、新品，
        switch($sort){
        case 1 :
            $order = 'is_hot desc';
          break;
       
        case 2 :
            $order = 'add_time desc';
          break;
          case 3 :
            $order = 'shop_price desc';
          break;
      default:
          $order = '';
        break;
    }


// 分页
 $total= M('goods')->where("cat_id in(" .$cids.")")->count();
  $pageObj=new Page($total,12,5);
  $page=$pageObj->show(5);
  // $totalp=$pageObj->$totalPage;
  // $selfp=$pageObj->$selfPage;
$this->assign('page',$page);
 $limit = $pageObj->limit();

   // 列表数据显示

if($finalGids){
  $list = M('goods')->where("goods_id in(".implode(',',$finalGids).")")->limit($limit)->order('add_time desc')->all();
  if(!empty($_GET['sort'])){
    
     $list = M('goods')->where("cat_id in(" .$cids.")")->order($order)->limit($limit)->all();
  }
  

}else{

  $list=array();

  
}

if(!empty($word)){
     $list = M('goods')->where(" goods_name like '%".$word."%'")->limit($limit)->all();
  }
  
 $this->assign('list',$list);  
$this->assign('total',$total);

 // p($crumb);die;
    $this->display();

 


   }

















}

























 ?>